home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / CD32 / CD32_Support / examples / cdgsxl / Include / cdxl / pan.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-08  |  3.0 KB  |  102 lines

  1. /************************************************************************
  2. ***
  3. ***  Pan.h -- PAN file format used for multimedia sequencing
  4. ***
  5. ***  Created by: Carl Sassenrath & Ken Yeast, Pantaray, Inc., Jan 1991
  6. ***
  7. ************************************************************************/
  8.  
  9. #if ! defined( PAN_H )
  10. #define    PAN_H
  11.  
  12.  
  13. /***********************************************************************
  14. ***
  15. ***  Pan Head Structure
  16. ***
  17. ***    Minimum required for all types of PAN files, including
  18. ***    custom PAN files.
  19. ***
  20. ************************************************************************/
  21.  
  22. struct PanHead
  23. {
  24.     UBYTE    Type;            // PAN structure type
  25.     UBYTE    Info;            // PAN flags and other info
  26.     ULONG    Size;            // Frame size including PAN
  27. };
  28.  
  29. // Currently defined Types:
  30.  
  31. #define    PAN_CUSTOM    0        // For your custom data formats
  32. #define    PAN_STANDARD    1        // First standard format
  33. #define    PAN_SPECIAL    2        // Used for testing new ideas
  34.  
  35.  
  36. /************************************************************************
  37. ***
  38. ***  Pan Frame Structure
  39. ***
  40. ***    Standard frame structure used for most files.
  41. ***
  42. ************************************************************************/
  43.  
  44. struct PanFrame
  45. {
  46.     UBYTE    Type;            // Type = PAN_STANDARD
  47.     UBYTE    Info;            // PAN flags and other info (below)
  48.     ULONG    Size;            // Frame size including PAN
  49.     ULONG    Back;            // Bytes back to previous frame
  50.     ULONG    Frame;            // Frame sequence number
  51.     UWORD    XSize;            // Image width in pixels
  52.     UWORD    YSize;            // Image height in pixels
  53.     UBYTE    Reserved;        // Must be zero for now
  54.     UBYTE    PixelSize;        // Bits per pixel (depth)
  55.     UWORD    ColorMapSize;        // Size of color map in bytes
  56.     UWORD    AudioSize;        // Size of audio sample in bytes
  57.     UBYTE    PadBytes[8];        // Reserved for future
  58.  
  59. //    UWORD    ColorMap[]        // Color map  (variable size)
  60. //    UWORD    Video[];        // Video data (variable size)
  61. //    UWORD    Audio[];        // Audio data (variable size)
  62. };
  63.  
  64. typedef    struct PanFrame PAN;
  65.  
  66. #define    PAN_SIZE        sizeof( PAN )
  67.  
  68. // PanFrame.Info: Video Types
  69.  
  70. #define    PIV_MASK        0x0F    // Mask for video values:
  71. #define    PIV_STANDARD        0    // Normal RGB encoding
  72. #define    PIV_HAM            1    // Amiga HAM encoding
  73. #define    PIV_YUV            2    // YUV encoding
  74. #define    PIV_AVM            3    // AVM & DCTV encoding
  75. #define    PI_VIDEO( p )        ( (p)->Info & PIV_MASK )
  76.  
  77. // PanFrame.Info: Pixel Value Orientation
  78.  
  79. #define    PIF_MASK        0xC0    // Mask for orientation values:
  80. #define    PIF_PLANES        0x00    // Data is bit plane oriented
  81. #define    PIF_PIXELS        0x40    // Data is pixel oriented (chunky)
  82. #define    PIF_LINES        0x80    // Data is line oriented
  83. #define    PI_PIXEL( p )        ( (p)->Info & PIF_MASK )
  84.  
  85. // PanFrame.Info: Audio type
  86.  
  87. #define    PIA_MASK        0x10    // Mask for audio values:
  88. #define    PIA_MONO        0x00    // 1 channel sound
  89. #define    PIA_STEREO        0x10    // 2 channel sound
  90. #define    PI_AUDIO( p )        ( (p)->Info & PIA_MASK )
  91.  
  92.  
  93. // Size macros
  94.  
  95. #define    ROW_SIZE( x )        ( ( ( (x) + 15 ) / 16 ) << 1 )
  96. #define    CMAP_SIZE( p )        ( (p)->ColorMapSize )
  97. #define    PLANE_SIZE( p )        ( ROW_SIZE( (p)->XSize ) * (p)->YSize )
  98. #define    IMAGE_SIZE( p )        ( PLANE_SIZE( p ) * (p)->PixelSize )
  99. #define    FRAME_SIZE( p )        ( PAN_SIZE + CMAP_SIZE( p ) + IMAGE_SIZE( p ) + (p)->AudioSize )
  100.  
  101. #endif
  102.